home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BCI NET
/
BCI NET Dec 94.iso
/
archives
/
applications
/
wp
/
ags-261-030.lha
/
gs261gs_intui.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-07-15
|
3KB
|
120 lines
#include "gs.h"
#include <stdio.h>
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/cghooks.h>
#include <intuition/classes.h>
#include <clib/intuition_protos.h>
#include <intuition/gadgetclass.h>
#include <clib/utility_protos.h>
#include "rkmmodel.h"
#include "gxdevice.h"
#include "gdevintui.h"
intui_device gs_intui_device;
struct IntuitionBase *IntuitionBase;
struct UtilityBase *UtilityBase;
struct LayersBase *LayersBase;
extern int i_close_device(gx_device *);
extern struct Gadget *pg_h;
extern struct Gadget *pg_v;
extern Object *my_rkm_model1;
extern Object *my_rkm_model2;
extern int i_close_device(gx_device *);
void msg_loop(struct Window *);
void gs_intui(void)
{
struct Window *w=gs_intui_device.w;
if((IntuitionBase=(struct IntuitionBase *)\
OpenLibrary("intuition.library",LIB_REV))!=NULL)
{
if((UtilityBase=(struct UtilityBase *)\
OpenLibrary("utility.library",LIB_REV))!=NULL)
{
if((LayersBase=(struct LayersBase *)\
OpenLibrary("layers.library",LIB_REV))!=NULL)
{
ModifyIDCMP(w,IDCMP_NEWSIZE|IDCMP_IDCMPUPDATE);
/* for ever */
for(;;) msg_loop(w);
}
}
}
}
void msg_loop(struct Window *w)
{
struct IntuiMessage *imsg;
static LONG old_layer_xpos=0;
static LONG old_layer_ypos=0;
BOOL is_rkmmod;
int rkm_id;
ULONG val;
struct TagItem *ti;
struct TagItem *tstate;
struct RastPort *rp=gs_intui_device.rp;
WaitPort(w->UserPort);
while((imsg=(struct IntuiMessage *)GetMsg(w->UserPort))!=NULL)
{
switch(imsg->Class)
{
case IDCMP_NEWSIZE:
SetGadgetAttrs(pg_h,w,NULL,\
PGA_Visible,w->GZZWidth/SCROLL_UNIT,
TAG_END);
SetGadgetAttrs(pg_v,w,NULL,\
PGA_Visible,w->GZZHeight/SCROLL_UNIT,\
TAG_END);
SetAttrs(my_rkm_model1,RKMMOD_Limit,(gs_intui_device.width-
w->GZZWidth)/SCROLL_UNIT);
SetAttrs(my_rkm_model2,RKMMOD_Limit,(gs_intui_device.height-
w->GZZHeight)/SCROLL_UNIT);
WaitBlit();
SyncSBitMap(rp->Layer);
CopySBitMap(rp->Layer);
break;
case IDCMP_IDCMPUPDATE:
tstate=ti=(struct TagItem *)imsg->IAddress;
is_rkmmod=FALSE;
rkm_id=-1;
while((ti=NextTagItem(&tstate))!=NULL)
{
switch(ti->ti_Tag)
{
case RKMMOD_Id:
is_rkmmod=TRUE;
rkm_id=ti->ti_Data;
break;
case RKMMOD_CurrVal:
val=ti->ti_Data;
break;
}
}
if(is_rkmmod)
{
switch(rkm_id)
{
case 0:
ScrollLayer(0,rp->Layer,\
((LONG)val-old_layer_xpos)*SCROLL_UNIT,0);
old_layer_xpos=val;
break;
case 1:
ScrollLayer(0,rp->Layer,0,\
((LONG)val-old_layer_ypos)*SCROLL_UNIT);
old_layer_ypos=val;
break;
default:
}
}
}
ReplyMsg((struct Messsage *)imsg);
}
}